# -*- coding: utf-8 -*-
import random
import re
import time
import scrapy
from MeiHaoTong.user_agent import Android

class ShenDuanZi(scrapy.Spider):
    name = 'taojinge'
    start_urls = [
        'http://www.51taojinge.com/kuaibao/index.php',
        'http://www.51taojinge.com/baidu/index.php',
        'http://www.51taojinge.com/yidian/index.php'
    ]
    baidu_cate = {'体育': '216', '综合': '217', '科技': '218', '财经': '219', '社会': '220', '娱乐': '221', '职场': '222',
                  '教育': '223', '健康': '224', '生活': '225', '军事': '226', '新闻': '227', '时尚': '228', '育儿': '229',
                  '三农': '230', '数码': '231', '美食': '232', '女人': '233', '汽车': '234', '养生': '235', '旅游': '236',
                  '文化': '237', '情感': '238', '摄影': '239', '家居': '240', '音乐': '241', '搞笑': '242', '游戏': '243',
                  '科学': '244', '悦读': '245', '房产': '246', '宠物': '247', '动漫': '248', '影视': '249', '艺术': '250',
                  '星座': '251', '政务': '252', '国内': '253', '国际': '254', '美图': '255', '历史': '256', '其他': '257',
                  '互联网': '258', '生活方式': '259', '影视娱乐': '260'}
    yidian_cate = {'娱乐': '174', '社会': '175', '财经': '176', '时尚': '177', '搞笑': '178', '时政': '179', '军事': '180',
                   '科技': '181', '文化': '182', '教育': '183', '职场': '184', '健康': '185', '美食': '186', '宗教': '187',
                   '育儿': '188', '历史': '189', '国际': '190', '游戏': '191', '传媒': '192', '情感': '193', '科学': '194',
                   '体育': '195', '旅游': '196', '家居': '197', '汽车': '198', '房产': '199', '动漫': '200', '明星': '201',
                   '媒体': '202', '星座': '203', '公益': '204', '彩票': '205', '视觉': '206', '人文': '207', '生活': '208',
                   '萌宠萌娃': '209', '电视剧': '210', '电影': '211', '创意广告': '212', '漫画': '213', '美女': '214', '其他': '215'}
    qie_cate = {'三农': '280', '人文': '281', '传媒': '282', '体育': '283', '健康': '284', '军事': '285', '动漫': '286', '历史': '287',
                '国际': '288', '娱乐': '289', '宠物': '290', '家居': '291', '彩票': '292', '影视': '293', '心灵': '294', '快报': '295',
                '房产': '296', '搞笑': '297', '摄影': '298', '政务': '299', '教育': '300', '数码': '301', '文化': '302', '新闻': '303',
                '旅游': '304', '时尚': '305', '星座': '306', '汽车': '307', '测试': '308', '游戏': '309', '猎奇': '310', '生活': '311',
                '科学': '312', '科技': '313', '美容': '314', '育儿': '315', '舞蹈': '316', '视觉': '317', '设计': '318', '财经': '319',
                '资讯': '320', '音乐': '321', '视频': '322', '其他': '323', '思想情感': '324', '电影电视剧': '325', '职场招聘': '326'}

    def parse(self, response):
        con = response.xpath("//table[@class='table table-bordered']//tbody/tr")
        for info in con:
            item = {}
            item['title'] = info.xpath("./td[2]/a/text()").extract_first()
            item['url'] = info.xpath("./td[2]/a/@href").extract_first()
            item['browse_count'] = info.xpath("./td[4]/text()").extract_first()  # 阅读量
            item['comment_count'] = info.xpath("./td[3]/text()").extract_first()  # 评论数
            item['publish_time'] = info.xpath("./td[6]/text()").extract_first()
            item['spider_time'] = time.strftime("%Y-%m-%d %X", time.localtime())
            if 'kuaibao' in response.url:
                item['site_id'] = "108"  # 站点分类
                item['site_classify_id'] = self.qie_cate.get(info.xpath("./td[5]//text()").extract_first(), '323')
            elif 'baidu' in response.url:
                item['site_id'] = "109"  # 站点分类
                item['site_classify_id'] = self.baidu_cate.get(info.xpath("./td[5]//text()").extract_first(), '257')
            elif 'yidian' in response.url:
                item['site_id'] = "107"  # 站点分类
                item['site_classify_id'] = self.yidian_cate.get(info.xpath("./td[5]//text()").extract_first(), '215')
            if item['comment_count'] == '0':
                item['browse_count'] = random.randint(1, 10000)
            else:
                item['browse_count'] = int(item['comment_count']) * 10 + random.randint(1, 10)
            yield scrapy.Request(item['url'], callback=self.parse_detail,meta={"item":item},headers={'User-Agent': random.choice(Android)})

    def parse_detail(self,response):
        item = response.meta["item"]
        if "kuaibao" in response.url:
            item['author']=response.xpath('//span[@class="author"]/text()').extract_first()
        elif "baidu" in response.url:
            item['author']=response.xpath('//div[@class="name"]/text()[2]').extract_first().replace('\r\n\r\n','').replace(' ','')
        elif "yidian" in response.url:
            author=re.findall('class="source imedia">([^<]+)',response.text)
            if author:
                item['author']=author[0]
        if item['author']:
            yield item
        # print(item)
